package com.zx.callback.common.utils;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.alibaba.fastjson.parser.Feature;

/**
 * Created by zhaox on 2016-05-09 15:30:49.
 */
public class JsonUtil {

    /**
     * 对象转json  排除了  curPage,pageSize,orderByStr  三个公用键
     *
     * @param obj
     * @return
     */
    public static String objToJsonStr(Object obj) {
        JSONObject json = JSON.parseObject(JSON.toJSONString(obj));
        if (json.containsKey("curPage")) {
            json.remove("curPage");
        }
        if (json.containsKey("pageSize")) {
            json.remove("pageSize");
        }
        if (json.containsKey("orderByStr")) {
            json.remove("orderByStr");
        }
        return json.toJSONString();
    }

    /**
     * json 转 java对象
     *
     * @param json
     * @param classz
     * @param <T>
     * @return
     */
    public static <T> T jsonToObj(JSON json, Class<T> classz) {
        return JSON.toJavaObject(json, classz);
    }


    /**
     * json字符串转List
     * @param jsonStr
     * @param type  new TypeReference<ArrayList<T>>() {}
     * @param features 可不传
     * @param <T>
     * @return
     */
    public static <T> T jsonStrToListObj(String jsonStr, TypeReference<T> type,Feature... features){
        return JSON.parseObject(jsonStr,type, features);
    }

}
